package 剑指Offer;

public class Offer55II_平衡二叉树 {
    class TreeNode {
        int val;
        Offer55II_平衡二叉树.TreeNode left;
        Offer55II_平衡二叉树.TreeNode right;

        TreeNode(int x) {
            val = x;
        }
    }

    boolean res = true;

    public boolean isBalanced(TreeNode root) {
        if (root == null) {
            return true;
        }
        utils(root);
        return res;
    }


    public int utils(TreeNode root) {//求树的最大深度
        if (root == null) {
            return 0;
        }
        int left = utils(root.left);//左子树的深度
        int right = utils(root.right);//右子树的深度
        if (Math.abs(left - right) > 1) {//在求出每一个节点的左子树和右子树最大深度后，都进行一次减法运算，Math.bas()是把值转化为绝对值，避免出现负数干扰判断
            res = false;
        }

        return Math.max(left, right) + 1;
    }
}
